package org.eiahe.hr.salary.service;

import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;
import org.eiahe.hr.salary.domain.bo.SalaryCorrectionRecordBo;
import org.eiahe.hr.salary.domain.vo.SalaryCorrectionRecordVo;

import java.util.Collection;
import java.util.List;

/**
 * 薪资纠错记录Service接口
 *
 * @author zhangnn
 */
public interface ISalaryCorrectionRecordService {

    /**
     * 查询薪资纠错记录
     *
     * @param correctionId 薪资纠错记录ID
     * @return 薪资纠错记录
     */
    SalaryCorrectionRecordVo queryById(Long correctionId);

    /**
     * 查询薪资纠错记录列表
     *
     * @param bo 薪资纠错记录业务对象
     * @return 薪资纠错记录集合
     */
    List<SalaryCorrectionRecordVo> queryList(SalaryCorrectionRecordBo bo);

    /**
     * 分页查询薪资纠错记录列表
     *
     * @param bo        薪资纠错记录业务对象
     * @param pageQuery 分页参数
     * @return 薪资纠错记录分页数据
     */
    TableDataInfo<SalaryCorrectionRecordVo> queryPageList(SalaryCorrectionRecordBo bo, PageQuery pageQuery);

    /**
     * 新增薪资纠错记录
     *
     * @param bo 薪资纠错记录业务对象
     * @return 是否成功
     */
    Boolean insertByBo(SalaryCorrectionRecordBo bo);

    /**
     * 修改薪资纠错记录
     *
     * @param bo 薪资纠错记录业务对象
     * @return 是否成功
     */
    Boolean updateByBo(SalaryCorrectionRecordBo bo);

    /**
     * 批量删除薪资纠错记录
     *
     * @param ids 薪资纠错记录ID数组
     * @return 是否成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 审批薪资纠错记录
     *
     * @param correctionId    纠错记录ID
     * @param approvalStatus  审批状态(1审批通过 2审批拒绝)
     * @param approver        审批人
     * @param approvalOpinion 审批意见
     * @return 是否成功
     */
    Boolean approveCorrection(Long correctionId, String approvalStatus, String approver, String approvalOpinion);

    /**
     * 执行薪资纠错操作
     *
     * @param correctionId 纠错记录ID
     * @return 是否成功
     */
    Boolean executeCorrection(Long correctionId);
}
